package com.ce.webframework.sec.service;

import java.util.Date;
import java.util.List;

import com.ce.webframework.sec.model.SecExcludeSchedDO;
import com.ce.webframework.sec.model.SecScheduleDO;

public interface ISecScheduleService {
	
	/**
	 * 功能描述:增加日程记录
	 *
	 * @param schDO
	 *            SecScheduleDO 实体对象
	 * @return SecScheduleDO  增加后的对象
	 */


	public SecScheduleDO addSecSchedule(SecScheduleDO schDO) ;

	/**
	 * 功能描述:更新日程记录
	 *
	 * @param calDO
	 *            SecScheduleDO 实体对象
	 * @return schDO  
	 *            修改后的对象
	 */
	public SecScheduleDO updateSecSchedule(SecScheduleDO schDO)  ;

	/**
	 * 功能描述:按主键Id 删除日程记录
	 *
	 * @param scheduleId
	 *            SecScheduleDO 的主键
	 * @return boolean 删除成功是为true，失败时为false
	 */

	public boolean deleteSecSchedule(Long scheduleId)  ;


	/**
	 * 功能描述:根据scheduleId查找SecScheduleDO对象
	 *
	 * @param scheduleId
	 *            SecScheduleDO对象的Id
	 * @return SecScheduleDO  id对应的SecScheduleDO对象
	 */
	public SecScheduleDO getSecScheduleById(Long scheduleId)  ;
	/**
	 * 功能描述:根据scheduleId查找SecScheduleDO对象
	 *
	 * @param scheduleId
	 *            SecScheduleDO对象的Id
	 * @param remindTime
	 *            remindTime
	 * @return SecScheduleDO  id对应的SecScheduleDO对象
	 */
	public SecScheduleDO getSecScheduleById(Long scheduleId,Date remindTime) ;



	/**
	 * 功能描述:根据用户Id和日期 查找 SecScheduleDO对象列表
	 *
	 * @param userId
	 *            用户的Id
	 * @param selectedDate
	 *            当前选择的日期
	 * @return List<SecScheduleDO> 对象
	 *
	 * 返回符合条件的查询对象列表
	 */

	public List<SecScheduleDO> getSecScheduleList(Long userId, Date selectedDate)  ;

	/**
	 * 功能描述:根据用户传入的日期,记录有数据的日期
	 *
	 * @param userId
	 *            用户的Id
	 * @param selectedDate
	 *            当前日期
	 * @return int[]
	 *
	 * 返回符合条件的查询对象列表
	 */


	public int[] changeMonthStyle(Long userId,Date selectedDate) ;


	/**
	 * 功能描述:根据 scheduleId 删除 SecExcludeSchedDO 表的记录
	 * @param scheduleId
	 *           SecScheduleDO 的主键
	 * @return  void
     */
	public void delSecExcludeSchedDO(Long  scheduleId) ;


	/**
	 * 功能描述:增加一条 记录到 日历 循环排除表
	 *
	 * @param SecExcludeSchedDO
	 *            SecExcludeSchedDO 实体对象
	 * @return void
	 */
	public void addSecExcludeSchedDO(SecExcludeSchedDO schExcludeDO) ;

	/**
	 * 功能描述:处理当日循环重复的数据
	 *
	 * @param schList
	 *          待处理的List
	 * @param selectedDate
	 *          选中的当日    
	 * @return List<SecScheduleDO>
	 */
	 public List<SecScheduleDO> tackleRepeatCycle(List<SecScheduleDO> schList,Date selectedDate) ;


		/**
		 * 功能描述:处理当月循环重复的数据
		 *
		 * @param schList
		 *          待处理的List
		 * @param beginDate
		 *         当月开始时间    
		 * @param endDate
		 *         当月结束时间      
		 * @param dateDay
		 *         记录的数组     
		 * @return List<SecScheduleDO>  dateDay
		 */
	 public List<SecScheduleDO> tackleRepeatMonthCycle(List<SecScheduleDO> schList,
			 Date beginDate,Date endDate,int[] dateDay) ;
		/**
		 * 功能描述:每日定时提醒功能
		 * @param userId
		 *           用户Id
		 * @param selectedDate
		 *           选择的日期     
		 * @return  List<SecScheduleDO>
	     */
		public List<SecScheduleDO> getDayRemiderList(Long  userId,Date selectedDate);
		
		


}
